home *** CD-ROM | disk | FTP | other *** search
/ Kompuutteri Kaikille K-CD 2002 #1 / K-CD_2002-01.iso / Delphi / INSTALL / program files / Borland / Delphi6 / Doc / SysInit.int < prev    next >
Text File  |  2001-05-22  |  3KB  |  73 lines

  1. { *********************************************************************** }
  2. {                                                                         }
  3. { Delphi / Kylix Cross-Platform Runtime Library                           }
  4. { System Initialization Unit                                              }
  5. {                                                                         }
  6. { Copyright (c) 1997-2001 Borland Software Corporation                    }
  7. {                                                                         }
  8. { *********************************************************************** }
  9.  
  10. unit SysInit;
  11.  
  12. interface
  13.  
  14. {$H+,I-,R-,S-,O+,W-}
  15. {$WARN SYMBOL_PLATFORM OFF}
  16.  
  17. {$IFDEF LINUX}
  18. const
  19.   ExeBaseAddress = Pointer($8048000) platform;
  20. {$ENDIF}
  21.  
  22. var
  23.   ModuleIsLib: Boolean;         { True if this module is a dll (a library or a package) }
  24.   ModuleIsPackage: Boolean;     { True if this module is a package }
  25.   ModuleIsCpp: Boolean;         { True if this module is compiled using C++ Builder }
  26.   TlsIndex: Integer;            { Thread local storage index }
  27.   TlsLast: Byte;                { Set by linker so its offset is last in TLS segment }
  28.   HInstance: LongWord;          { Handle of this instance }
  29.   {$EXTERNALSYM HInstance}
  30.   (*$HPPEMIT 'namespace Sysinit' *)
  31.   (*$HPPEMIT '{' *)
  32.   (*$HPPEMIT 'extern PACKAGE HINSTANCE HInstance;' *)
  33.   (*$HPPEMIT '} /* namespace Sysinit */' *)
  34.   DllProc: TDLLProc;            { Called whenever DLL entry point is called }
  35.   { DllProcEx passes the Reserved param provided by WinNT on DLL load & exit }
  36.   DllProcEx: TDLLProcEx absolute DllProc;
  37.   DataMark: Integer = 0;        { Used to find the virtual base of DATA seg }
  38. {$IFDEF ELF}
  39.   TypeImportsTable: array [0..0] of Pointer platform;  { VMT and RTTI imports table for exes }
  40.   _GLOBAL_OFFSET_TABLE_: ARRAY [0..2] OF Cardinal platform;
  41.   (* _DYNAMIC: ARRAY [0..0] OF Elf32_Dyn; *)
  42. {$IFDEF PC_MAPPED_EXCEPTIONS}
  43.   TextStartAdj: Byte platform;            { See GetTextStart }
  44.   CodeSegSize: Byte platform;             { See GetTextStart }
  45. function GetTextStart : LongInt; platform;
  46. {$ENDIF}
  47. {$ENDIF}
  48.  
  49. function _GetTls: Pointer;
  50. {$IFDEF LINUX}
  51. procedure _InitLib(Context: PInitContext);
  52. procedure _GetCallerEIP;
  53. procedure _InitExe(InitTable: Pointer; Argc: Integer; Argp: Pointer);
  54. procedure _start; cdecl;
  55. function _ExitLib: Integer; cdecl;
  56. function _InitPkg: LongBool;
  57. {$ENDIF}
  58. {$IFDEF MSWINDOWS}
  59. procedure _InitLib;
  60. procedure _InitExe(InitTable: Pointer);
  61. function _InitPkg(Hinst: Integer; Reason: Integer; Resvd: Pointer): LongBool; stdcall;
  62. {$ENDIF}
  63. procedure _PackageLoad(const Table: PackageInfo);
  64. procedure _PackageUnload(const Table: PackageInfo);
  65.  
  66. {$IFDEF MSWINDOWS}
  67. { Invoked by C++ startup code to allow initialization of VCL global vars }
  68. procedure VclInit(isDLL, isPkg: Boolean; hInst: LongInt; isGui: Boolean); cdecl;
  69. procedure VclExit; cdecl;
  70. {$ENDIF}
  71.  
  72. implementation
  73.